home *** CD-ROM | disk | FTP | other *** search
/ Die Speccy' 97 / Die Speccy' 97.iso / amiga_system / the_aminet / comm / bbs / bbbbs85.lha / rexx / bbsUPDATE.rexx < prev    next >
OS/2 REXX Batch file  |  1994-12-12  |  4KB  |  189 lines

  1. /* $VER: Update.rexx 8.3 (12.12.94) */
  2.  
  3. CALL TIME('R')
  4. SAY
  5. SAY SUBSTR(SOURCELINE(1),4)
  6. SAY
  7. SAY 'This macro updates the file libraries for ALL previous'
  8. SAY 'versions of BBBBS to work with BBBBS version 8.0 and above.'
  9. SAY 'It will abort before trying to update twice, so ''no worries''.'
  10. SAY
  11. SAY 'It will renumber the first 101 files by shuffling them into'
  12. SAY 'blank spots in the filelist, or adding to the end if that is'
  13. SAY 'necessary. It then saves the filelist and calls BuildALPHA.rexx.'
  14. SAY
  15. OPTIONS PROMPT 'Continue? (nY) > '
  16. PULL junk
  17. IF LEFT(junk,1)='N' THEN
  18.   DO
  19.     OPTIONS PROMPT 'Not renumbering is probably not a good idea, are you sure? (Ny) > '
  20.     PULL junk
  21.     IF LEFT(junk,1)='Y' THEN EXIT
  22.   END
  23. figarg='s:CONFIG.BBS'
  24. IF ~EXISTS(figarg) THEN figarg='BBS:BBS_TEXT/CONFIG.BBS'
  25. IF readopen(figarg)=0 THEN
  26.   DO
  27.     SAY 's:CONFIG.BBS and BBS:BBS/CONFIG.BBS are both missing!'
  28.     EXIT
  29.   END
  30. lynes.=''
  31. DO i=1 TO 40
  32.   lynes.i=READLN(f)
  33. END
  34. CALL CLOSE(f)
  35.  
  36. compos=POS('/*',lynes.1)
  37. IF compos>0 THEN lynes.1=LEFT(lynes.1,compos-1)
  38. bbsname=STRIP(lynes.1)
  39.  
  40. sysop=WORD(lynes.2,1)
  41.  
  42. bbspath=WORD(lynes.6,1)
  43. IF ~EXISTS(bbspath) THEN
  44.   DO
  45.     SAY bbspath 'does not exist!'
  46.     EXIT
  47.   END
  48. testchar=RIGHT(bbspath,1)
  49. IF testchar~='/' & testchar~=':' THEN bbspath=bbspath'/'
  50.  
  51. libpath=WORD(lynes.8,1)
  52. IF ~EXISTS(libpath) THEN
  53.   DO
  54.     SAY libpath 'does not exist!'
  55.     EXIT
  56.   END
  57. testchar=RIGHT(libpath,1)
  58. IF testchar~='/' & testchar~=':' THEN libpath=libpath'/'
  59.  
  60. dirs.=''
  61. IF readopen(bbspath'Lists/Libraries') THEN
  62.   DO
  63.     SAY 'Loading Library list...'
  64.     DO i=1
  65.       line=READLN(f)
  66.       IF line='END' | EOF(f) THEN LEAVE i
  67.       num=WORD(line,1)
  68.       IF DATATYPE(num,'W') THEN dirs.num=STRIP(WORD(line,2))
  69.     END
  70.     CALL CLOSE(f)
  71.   END
  72. ELSE EXIT
  73.  
  74. file.=''
  75. file.0=0
  76. gottadoit=0
  77. IF readopen(bbspath'Lists/Files') THEN
  78.   DO
  79.     SAY 'Loading Current Files list...'
  80.     DO i=1
  81.       line=READLN(f)
  82.       IF EOF(f) THEN LEAVE i
  83.       num=WORD(line,1)
  84.       IF DATATYPE(num,'W') THEN
  85.         DO
  86.           IF gottadoit=0 THEN
  87.             DO
  88.               IF num>100 THEN
  89.                 DO
  90.                   SAY 'This file system has already been updated for BBBBS 8.0'
  91.                   SAY
  92.                   EXIT
  93.                 END
  94.             END
  95.           file.num=STRIP(WORD(line,2) WORD(line,3))
  96.           IF num>file.0 THEN file.0=num
  97.           IF num<100 THEN
  98.             IF LEFT(WORD(file.num,2),1)~='.' THEN gottadoit=1 
  99.         END
  100.     END
  101.     CALL CLOSE(f)
  102.   END
  103. ELSE EXIT
  104. SAY
  105.  
  106. oldtop=file.0
  107. SAY 'Renumbering files...'
  108. lastfill=102
  109. DO i=101 TO 1 BY -1
  110.   IF file.i='' THEN ITERATE i
  111.   DO j=lastfill WHILE file.j~=''
  112.   END
  113.   lastfill=j
  114.   IF i=1 THEN j=101
  115.   file.j=file.i
  116.   fnote=bbspath'FileNotes/'WORD(file.j,1)'/'WORD(file.j,2)
  117.   IF readopen(fnote) THEN
  118.     DO
  119.       lynes.=''
  120.       DO k=1
  121.         line=READLN(f)
  122.         IF EOF(f) THEN LEAVE k
  123.         lynes.k=line
  124.       END
  125.       CALL CLOSE(f)
  126.       lynes.0=k-1
  127.       lynes.1=OVERLAY(j,lynes.1,7,5)
  128.       CALL DELAY(28)
  129.       IF writeopen(fnote) THEN
  130.         DO
  131.           DO k=1 TO lynes.0
  132.             CALL WRITELN(f,lynes.k)
  133.           END
  134.           CALL CLOSE(f)
  135.           file.i=''
  136.           SAY 'Renumbered file' i 'to' j WORD(file.j,1)'/'WORD(file.j,2)
  137.         END
  138.       IF j>file.0 THEN file.0=j
  139.     END
  140. END
  141. SAY
  142. IF file.0>oldtop THEN
  143.   DO
  144.     IF readopen(bbspath'Numbers/LastFile') THEN
  145.       DO
  146.         num=READLN(f)
  147.         CALL CLOSE(f)
  148.         CALL DELAY(50)
  149.         IF num<file.0 THEN
  150.           DO
  151.             SAY 'LastFile number reset to' file.0
  152.             IF writeopen(bbspath'Numbers/LastFile') THEN CALL WRITELN(f,file.0)
  153.             CALL CLOSE(f)
  154.           END
  155.       END
  156.   END
  157. SAY
  158. SAY 'Rebuilding all filelists...'
  159. SAY
  160. CALL BuildALPHA.rexx()
  161. SAY
  162. SAY 'The' bbsname 'file libraries'
  163. SAY 'have been updated for use with BBBBS version 8.0 and above.'
  164. SAY
  165. EXIT
  166.  
  167.  
  168. /* subroutines */
  169.  
  170. readopen:
  171. PARSE ARG fname
  172. ok=OPEN(f,fname,'R')
  173. IF ok~=0 THEN RETURN 1
  174. line=fname 'failed to open for reading!'
  175. SAY line
  176. RETURN 0
  177.  
  178.  
  179. writeopen:
  180. PARSE ARG fname
  181. CALL CLOSE(f)
  182. ok=OPEN(f,fname,'W')
  183. IF ok~=0 THEN RETURN 1
  184. line=fname 'failed to open for writing!'
  185. SAY line
  186. RETURN 0
  187.  
  188. /* UpdateBBBBS.rexx */
  189.